Generators are lazy; they compute values on demand. Arrays are eager, computing all values upfront. Generators save memory for large sequences but may have slightly more overhead per value.
Generators produce values only when requested, which is ideal for infinite sequences or large datasets that cannot fit in memory. Arrays allocate memory for all elements at once. For example, [...Array(1e6).keys()] uses large memory, while a generator that yields numbers 1 to 1e6 uses minimal memory.